package com.zmn.plat.dubbo.interfaces.part;

import java.util.List;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;

import com.zmn.common.dto.VtDTO;
import com.zmn.common.dto2.ResponseDTO;
import com.zmn.plat.common.dto.part.PartCategoryDRO;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**
 * 配件分类远程服务
 *
 * @author duanzuocai
 * @version v1.0
 * @since 2018/12/8 10:12
 */
@Api(value = "配件分类服务", tags = {"配件分类"})
public interface PartSkuCategoryListRemoteService {

    /**
     * 描述:通过一级配件分类ID/二级配件分类ID获取分类详情
     *
     * @param categoryId
     *            配件分类ID
     * @return ResponseDTO<PartCategoryDRO>
     * @author DaiZhichao
     * @since 2018/10/31 10:58
     */
    @ApiOperation(value = "通过一级配件分类ID/二级配件分类ID获取分类详情", response = ResponseDTO.class, tags = {"详情"})
    ResponseDTO<PartCategoryDRO>
        getCategoryDetailByCategoryId(@NotNull(message = "categoryId不能为空") @Positive(message = "categoryId必须为大于0的正整数") @ApiParam(value = "配件分类ID", required = true) Integer categoryId);

    /**
     * 描述:获取一级配件分类信息详情列表
     *
     * @return ResponseDTO<PartCategoryDRO>
     * @author DaiZhichao
     * @since 2018/10/25 9:55
     */
    @ApiOperation(value = "获取一级配件分类信息详情列表", response = ResponseDTO.class, tags = {"列表", "详情"})
    ResponseDTO<List<PartCategoryDRO>> listFirstLevelCategory();

    /**
     * 描述:获取一级配件分类信息简单列表
     *
     * @return ResponseDTO<PartCategoryDRO>
     * @author DaiZhichao
     * @since 2018/10/25 9:55
     */
    @ApiOperation(value = "获取一级配件分类信息简单列表", response = ResponseDTO.class, tags = {"列表"})
    ResponseDTO<List<VtDTO>> listFirstLevelSimpleCategory();

    /**
     * 描述:通过一级配件分类ID获取二级配件分类简单列表
     *
     * @param parentCategoryId
     *            一级分类的Id
     * @return ResponseDTO<VtDTO>
     * @author DaiZhichao
     * @since 2018/10/25 9:55
     */
    @ApiOperation(value = "通过一级配件分类ID获取二级配件分类简单列表", response = ResponseDTO.class, tags = {"列表"})
    ResponseDTO<List<VtDTO>> listSecondLevelSimpleCategoryByParentCategoryId(
        @NotNull(message = "parentCategoryId不能为空") @Positive(message = "parentCategoryId必须为大于0的正整数") @ApiParam(value = "一级分类的Id", required = true) Integer parentCategoryId);

    /**
     * 描述:通过一级配件分类ID获取二级配件分类详情列表
     *
     * @param parentCategoryId
     *            一级分类的Id
     * @return ResponseDTO<PartCategoryDRO>
     * @author DaiZhichao
     * @since 2018/10/25 9:55
     */
    @ApiOperation(value = "通过一级配件分类ID获取二级配件分类详情列表", response = ResponseDTO.class, tags = {"列表"})
    ResponseDTO<List<PartCategoryDRO>> listSecondLevelCategoryByParentCategoryId(
        @NotNull(message = "parentCategoryId不能为空") @Positive(message = "parentCategoryId必须为大于0的正整数") @ApiParam(value = "一级分类的Id", required = true) Integer parentCategoryId);
}
